Sinewave Shotgun
#Shader_Music #オシレーター #シンセ
Sinewave Shotgunは、ハイハットやシンバル等の音が出るオシレーター
加算合成シンセシスによる
不協和音ショットガン
完全プロシージャル
TR-808のハイハット・Oidosから着想を得た
TR-808のハイハットは、Metallic Noiseと呼ばれる、矩形波オシレータ6本+HPFハイパスフィルターで実現しているが、
GLSLでは当然フィルターなんて実装できないので、
代わりに大量のサイン波を用いて不協和音をばら撒き、それっぽいハイハット音を作り出す
サイン波を大量に生成しなければならない都合上、CPUでの生成はやや不適
ステートを持ってBiquad Filterが作れるんであれば、TR-808のアプローチのほうがいいはず
code:glsl
vec2 shotgun(float t, float spread, float snap) {
vec2 sum = vec2(0.0);
for (int i = 0; i < 64; i ++) {
vec3 dice = hash3f(vec3(i));
float partial = exp2(spread * dice.x);
partial = mix(partial, floor(partial + 0.5), snap);
sum += vec2(sin(TAU * t * partial)) * rotate2D(TAU * dice.y);
}
return sum / 64.0;
}
サイン波をFM変調させてもいい音が鳴る
snap というパラメータを上げていくと、ばら撒かれた不協和音が整数倍に近づき、整った音に近づく
これはNative Instruments Razorから着想を得た
Dittytoy
Dittytoy上でキックと一緒に鳴らしました
Sine with recurrence formulaを使えばCPUでも現実的な計算負荷で実現可能
https://dittytoy.net/ditty/1adb91fe55
Desmos
Desmosでも、Desmos: toneを用いて加算合成すれば実現可能
https://www.desmos.com/calculator/mcnu2shw6r